package com.zhuss.anno;

public interface Lock {

    /**
     * 加锁，无阻塞
     * @param key
     * @param expire
     * @return
     */
    Boolean tryDistributedLock(String key, long expire);

    /**
     * 加锁，有阻塞
     * @param key
     * @param expire
     * @param timeout
     * @return
     */
    Boolean distributedLock(String key, long expire, long timeout);

    /**
     * 解锁
     * @param key
     * @return
     */
    Boolean unlock(String key);

    /**
     * 加锁，无阻塞
     * @param name
     * @param expire
     * @return
     */
    String tryLock(String name, long expire);

    /**
     * 加锁，有阻塞
     * @param name
     * @param expire
     * @param timeout
     * @return
     */
    String lock(String name, long expire, long timeout);

    /**
     * 解锁
     * @param name
     * @param token
     * @return
     */
    boolean unlock(String name, String token);




}
